package annuaire.rmi.remotedObject;

import java.rmi.Remote;
import java.util.Set;

import annuaire.beans.Promotion;
import annuaire.beans.Student;

/**
 * Interface d'objet distant RMI, servant à gérer les services administrateur.
 * 
 * @author Yannick Lorenzati & Stephanie Malakian
 * 
 */
public interface IAdminService extends Remote {

	/**
	 * Ajoute une promotion.
	 * 
	 * @param p
	 *            La promotion à ajouter.
	 * @return La promotion qui vient d'être ajoutee, ou NULL si rien n'a été
	 *         ajouté.
	 * @throws Exception
	 */
	public Promotion addPromo(Promotion p) throws Exception;

	/**
	 * Met a jour une promotion.
	 * 
	 * @param p
	 *            La promotion à mettre à jour.
	 * @return La promotion qui vient d'être mise à jour, ou NULL si rien n'a
	 *         été mis à jour.
	 * @throws Exception
	 */
	public Promotion updatePromo(Promotion p) throws Exception;

	/**
	 * Supprime une promotion.
	 * 
	 * @param p
	 *            La promotion à supprimer.
	 * @return True si la méthode a reussi, false sinon.
	 * @throws Exception
	 */
	public boolean deletePromo(Promotion p) throws Exception;

	/**
	 * Ajoute des étudiants à une promotion.
	 * 
	 * @param p
	 *            La promotion à laquelle on veut rajouter des étudiants.
	 * @param setStudents
	 *            L'ensemble des étudiants à rajouter à la promotion.
	 * @return True si la méthode a reussi, false sinon.
	 * @throws Exception
	 */
	public boolean addStudentsToPromo(Promotion p, Set<Student> setStudents)
			throws Exception;

	/**
	 * Ajoute un etudiant
	 * 
	 * @param s
	 *            L'etudiant à rajouter.
	 * @return L'etudiant ajouté, ou NULL si l'ajout a echoué.
	 * @throws Exception
	 */
	public Student addStudent(Student s) throws Exception;

	/**
	 * Supprime un etudiant
	 * 
	 * @param s
	 *            L'etudiant à supprimer.
	 * @return True si la méthode a reussi, false sinon.
	 * @throws Exception
	 */
	public boolean deleteStudent(Student s) throws Exception;

}
